package br.com.infnet.posgraduacao.bean;

import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;

import br.com.infnet.cultbook.domain.produto.Livro;
import br.com.infnet.cultbook.service.LivroService;

@ManagedBean(name = "listaLivrosBean")
@SessionScoped
public class ListaLivrosBean {
	
	@EJB
	private LivroService livroService;
	
	/*Constantes de Retorno*/	
	private final String LISTAR = "listarLivros";
	private final String VISUALIZAR = "visualizarLivro";
	
	/*Atributos de Pagina*/
	private DataModel<Livro> livrosLista;
	
	private String buscaPorNome;
		
	private Livro livroSelecionado = new Livro();
	
	@PostConstruct
	public void init() {		
	}
	
	public String listarLivros() {		
		livrosLista = new ListDataModel<Livro>();
		
		if(this.buscaPorNome != null) {
			livrosLista.setWrappedData(livroService.buscarLivrosPorNome(this.buscaPorNome));
		} else {
			livrosLista.setWrappedData(livroService.list());
		}
		
		return this.LISTAR;
	}

	
	public String visualizarLivro(Livro livro) {
		this.livroSelecionado = livroService.findById(livro.getId());
		
		return this.VISUALIZAR;
	}
		
	/*
	* SETTERS E GETTERS
	*/
	
	public DataModel<Livro> getLivrosLista() {
		return livrosLista;
	}

	public void setLivrosLista(DataModel<Livro> livrosLista) {
		this.livrosLista = livrosLista;
	}

	public String getBuscaPorNome() {
		return buscaPorNome;
	}

	public void setBuscaPorNome(String buscaPorNome) {
		this.buscaPorNome = buscaPorNome;
	}

	public Livro getLivroSelecionado() {
		return livroSelecionado;
	}

	public void setLivroSelecionado(Livro livroSelecionado) {
		this.livroSelecionado = livroSelecionado;
	}
	
}

